package com.wwu.system.service;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wwu.common.web.ResultObj;
import com.wwu.common.web.ResultPage;
import com.wwu.system.entity.SysMenu;
import java.util.List;

/**
 * 系统菜单服务接口类
 * @author 一蓑烟雨
 * @date 2021-10-26
 * @version 1.0.0
 */
public interface ISysMenuService extends IService<SysMenu> {

   /**
    * 根据菜单名、父菜单Id获取菜单
    * @param menuName 菜单名
    * @param parentMenuId 父菜单id
    * @return com.wwu.system.entity.SysMenu
    * @author 一蓑烟雨
    * @date 2023/6/12 11:20
    */
   SysMenu getMenuByMenuName(String menuName,String parentMenuId);

   /**
    * 根据菜单名获取菜单
    * @param menuAuth 菜单权限
    * @return com.wwu.system.entity.SysMenu
    * @author 一蓑烟雨
    * @date 2023/6/28 10:40
    */
   SysMenu getMenuByMenuAuth(String menuAuth);

   /**
    * 根据父菜单id查询子菜单id
    * @param parentMenuIds 父菜单Id集合
    * @return java.util.List<java.lang.String>
    * @author 一蓑烟雨
    * @date 2023/7/6 11:36
    */
   List<String> getChildMenuIdsByPid(List<String> parentMenuIds);

   /**
    * 分页查询菜单信息
    * @param pageNum  页码
    * @param pageSize  每页数量
    * @param sysMenu 菜单实体
    * @return com.wwu.common.web.ResultObj
    * @author 一蓑烟雨
    * @date 2023/6/21 8:34
    */
   ResultPage<SysMenu> getMenuListPage(Integer pageNum, Integer pageSize, SysMenu sysMenu);

   /**
    * 根据菜单id查询菜单的父菜单树
    * @param menuId  菜单Id
    * @param menuType 菜单类型(0:模块;1:目录;2:菜单;3:按钮)
    * @return com.wwu.common.web.ResultObj
    * @author 一蓑烟雨
    * @date 2023/6/27 11:04
    */
   ResultObj parentMenuTree(String menuId, Integer menuType);

   /**
    * 添加菜单信息
    * @param sysMenuJson 菜单相关信息
    * @author 一蓑烟雨
    * @date 2023/6/13 21:51
    */
   void saveMenu(JSONObject sysMenuJson);

   /**
    * 更新菜单信息
    * @param sysMenu 菜单信息
    * @author 一蓑烟雨
    * @date 2023/6/2 17:19
    */
   void updateMenu(SysMenu sysMenu);

   /**
    * 更新菜单状态
    * @param menuId  菜单编码
    * @param menuStatus 菜菜单状态(0:启用;1:作废)
    * @author 一蓑烟雨
    * @date 2023/6/28 20:50
    */
   void updateMenuStatus(String menuId, Integer menuStatus);

   /**
    * 删除菜单信息
    * @param menuIds  菜单Id集合
    * @author 一蓑烟雨
    * @date 2023/6/12 21:30
    */
   void deleteMenu(List<String> menuIds);

   /**
    * 动态获取菜单
    * @return java.lang.String
    * @author 一蓑烟雨
    * @date 2023/6/30 15:13
    */
    String initMenu();
}
